package com.leinao.images.service;

import com.github.pagehelper.PageInfo;
import com.leinao.commons.Response;
import com.leinao.images.dto.ImageInfo;
import com.leinao.images.dto.LanguageDto;
import com.leinao.images.dto.FrameworkDto;
import com.leinao.images.dto.ImagesDto;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author  suqiliang
 * @date 2019年04月18日 下午2:29:54
 *
 */
public interface ImagesService {

	/**
	 * @Description 根据编程语言和框架匹配镜像列表
	 * @param language : 编程语言
	 * @param framework : 框架
	 * @param userId : 用户Id
	 * @author lizi
	 * @date 2019/04/18 上午11:49
	 */
	Response<List<ImagesDto>> getImagesList(String language, String framework, String userId);

	/**
	 * @Description 获取编程语言列表
	 * @author lizi
	 * @date 2019/04/18 上午11:49
	 */
	Response<List<LanguageDto>> getLanguageList();

	/**
	 * @Description 获取框架列表
	 * @author lizi
	 * @date 2019/04/18 上午11:49
	 */
	Response<List<FrameworkDto>> getFrameworkList();

	/**
	 *
	 * @Description: 创建自定义镜像
	 * @param name : 名称
	 * @param type : 类型: 1-默认提供，2-推荐提供，3-用户自定义
	 * @param userId : 用户Id
	 * @param content : 镜像简介
	 * @param contentMk : 镜像mk简介
	 * @param languageId : 算法ID
	 * @param frameworkId : 框架ID
	 * @param file : 上传文件
	 * @return: com.leinao.commons.Response<java.lang.Void>
	 * @Author: 曹阳
	 * @date: 2019/5/15 11:33
	 *
	 **/
	Response<Void> createUserImage(MultipartFile file, String name, Integer type, String userId, String content, String contentMk, Long languageId, Long frameworkId);

	/**
	 *
	 * @Description: 通过用户ID查询用户自定义镜像
	 * @param userId : 用户ID
	 * @param pageNum : 当前页
	 * @param pageSize : 每页条数
	 * @return: com.leinao.commons.Response<java.util.List<com.leinao.images.dto.ImagesDto>>
	 * @Author: 曹阳
	 * @date: 2019/5/15 16:27
	 *
	 **/
	Response<PageInfo> getUserImagesList(String userId, Integer pageNum, Integer pageSize);

	/**
	 *
	 * @Description: 通过镜像ID查询用户自定义镜像
	 * @param id : 镜像ID
	 * @param userId : 用户ID
	 * @return: com.leinao.commons.Response<java.util.List<com.leinao.images.dto.ImagesDto>>
	 * @Author: 曹阳
	 * @date: 2019/5/15 16:27
	 *
	 **/
	Response<ImageInfo> getUserImageById(Long id, String userId);

	/**
	 *
	 * @Description:  更新镜像简介
	 * @param id : 镜像ID
	 * @param content : 镜像简介
	 * @param contentMk : 镜像mk简介
	 * @param userId : 用户ID
	 * @return: com.leinao.commons.Response<java.lang.Void>
	 * @Author: 曹阳
	 * @date: 2019/5/15 17:28
	 *
	 **/
	Response<Void> updateUserImageContent(Long id, String content, String contentMk, String userId);

	/**
	 *
	 * @Description: 删除镜像
	 * @param id : 镜像ID
	 * @param userId : 用户ID
	 * @return: com.leinao.commons.Response<java.lang.Void>
	 * @Author: 曹阳
	 * @date: 2019/5/17 10:08
	 *
	 **/
	Response<Void> deleteUserImage(Long id, String userId);
}
